home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / ear / mui23dev.lha / MUI / Developer / Autodocs / MUI_List.doc < prev    next >
Text File  |  1994-12-23  |  26KB  |  940 lines

  1. TABLE OF CONTENTS
  2.  
  3. List.mui/List.mui
  4. List.mui/MUIM_List_Clear
  5. List.mui/MUIM_List_Exchange
  6. List.mui/MUIM_List_GetEntry
  7. List.mui/MUIM_List_Insert
  8. List.mui/MUIM_List_InsertSingle
  9. List.mui/MUIM_List_Jump
  10. List.mui/MUIM_List_Move
  11. List.mui/MUIM_List_NextSelected
  12. List.mui/MUIM_List_Redraw
  13. List.mui/MUIM_List_Remove
  14. List.mui/MUIM_List_Select
  15. List.mui/MUIM_List_Sort
  16. List.mui/MUIA_List_Active
  17. List.mui/MUIA_List_AdjustHeight
  18. List.mui/MUIA_List_AdjustWidth
  19. List.mui/MUIA_List_CompareHook
  20. List.mui/MUIA_List_ConstructHook
  21. List.mui/MUIA_List_DestructHook
  22. List.mui/MUIA_List_DisplayHook
  23. List.mui/MUIA_List_Entries
  24. List.mui/MUIA_List_First
  25. List.mui/MUIA_List_Format
  26. List.mui/MUIA_List_InsertPosition
  27. List.mui/MUIA_List_MultiTestHook
  28. List.mui/MUIA_List_Quiet
  29. List.mui/MUIA_List_SourceArray
  30. List.mui/MUIA_List_Title
  31. List.mui/MUIA_List_Visible
  32. List.mui/List.mui
  33.  
  34.     MUI's list class is very powerful. It handles all types
  35.     of entries, from a simple string to a complicated structure
  36.     with many associated resources. Multi column lists are
  37.     also supported, the format for a column is adjustable.
  38.  
  39.     Lists support any kind of sorting, multi selection and
  40.     an active entry that can be controlled with the mouse
  41.     or the cursor keys.
  42.  
  43.     Note: A list object alone doesn't make much sense, you
  44.           should always use it as child of a listview object.
  45.           This one attaches a scrollbar and handles all user
  46.           input.
  47. List.mui/MUIM_List_Clear
  48.  
  49.     NAME
  50.     MUIM_List_Clear (V4 )
  51.  
  52.     SYNOPSIS
  53.     DoMethod(obj,MUIM_List_Clear,);
  54.  
  55.     FUNCTION
  56.     Clear the list, all entries are removed. If a destruct
  57.     hook is set it will be called for every entry.
  58.  
  59.     SEE ALSO
  60.     MUIM_List_Insert, MUIA_List_DestructHook
  61. List.mui/MUIM_List_Exchange
  62.  
  63.     NAME
  64.     MUIM_List_Exchange (V4 )
  65.  
  66.     SYNOPSIS
  67.     DoMethod(obj,MUIM_List_Exchange,LONG pos1, LONG pos2);
  68.  
  69.     FUNCTION
  70.     Exchange two entries in a list.
  71.  
  72.     INPUTS
  73.     pos1 - number of the first entry.
  74.     pos2 - number of the second entry.
  75.  
  76.     Possible special values since muimaster.library V9:
  77.  
  78.     MUIV_List_Exchange_Top       0
  79.     MUIV_List_Exchange_Active   -1
  80.     MUIV_List_Exchange_Bottom   -2
  81.     MUIV_List_Exchange_Next     -3 /* only valid for second parameter */
  82.     MUIV_List_Exchange_Previous -4 /* only valid for second parameter */
  83.  
  84.     SEE ALSO
  85.     MUIM_List_Insert, MUIM_List_Remove, MUIM_List_Move
  86. List.mui/MUIM_List_GetEntry
  87.  
  88.     NAME
  89.     MUIM_List_GetEntry (V4 )
  90.  
  91.     SYNOPSIS
  92.     DoMethod(obj,MUIM_List_GetEntry,LONG pos, APTR *entry);
  93.  
  94.     FUNCTION
  95.     Get an entry of a list.
  96.  
  97.     INPUTS
  98.     pos   - Number of entry, MUIV_List_GetEntry_Active can
  99.             be used to get the active entry.
  100.  
  101.     entry - Pointer to a longword where the entry will
  102.             be stored. If the entry is not available
  103.             (either because you are out of bounds or
  104.             because there is no active entry), you will
  105.             receive a NULL.
  106.  
  107.     EXAMPLE
  108.     /* iterate through a list containing file info blocks */
  109.  
  110.     for (i=0;;i++)
  111.     {
  112.         struct FileInfoBlock *fib;
  113.  
  114.         DoMethod(list,MUIM_List_GetEntry,i,&fib);
  115.         if (!fib) break;
  116.  
  117.         printf("%s\n",fib->fib_FileName);
  118.     }
  119.  
  120.     SEE ALSO
  121.     MUIM_List_Insert, MUIM_List_Remove
  122. List.mui/MUIM_List_Insert
  123.  
  124.     NAME
  125.     MUIM_List_Insert (V4 )
  126.  
  127.     SYNOPSIS
  128.     DoMethod(obj,MUIM_List_Insert,APTR *entries, LONG count, LONG pos);
  129.  
  130.     FUNCTION
  131.     Insert new entries into a list.
  132.     When the list has a construct hook, the given pointers
  133.     won't be inserted directly but instead passed through 
  134.     to the construct hook.
  135.  
  136.     INPUTS
  137.     entries - pointer to an array of pointers to be inserted.
  138.               Warning: This is a pointer to a pointer. See
  139.               example for details.
  140.  
  141.     count   - Number of elements to be inserted. If count==-1,
  142.               entries will be inserted until NULL pointer in
  143.               the entries array is found.
  144.  
  145.     pos     - New entries will be added in front of this entry.
  146.               MUIV_List_Insert_Top:
  147.                  insert as first entry.
  148.               MUIV_List_Insert_Active:
  149.                  insert in front of the active entry.
  150.               MUIV_List_Insert_Sorted:
  151.                  insert sorted.
  152.               MUIV_List_Insert_Bottom:
  153.                  insert as last entry.
  154.  
  155.     EXAMPLE
  156.     /* insert a string */
  157.     char *str = "New entry";
  158.     DoMethod(list,MUIM_List_Insert,&str,1,MUIV_List_Insert_Bottom);
  159.  
  160.     /* insert an array */
  161.     char *str[] =
  162.     {
  163.        "Entry 1",
  164.        "Entry 2",
  165.        "Entry 3",
  166.        "Entry 4",
  167.        NULL
  168.     };
  169.     DoMethod(list,MUIM_List_Insert,str,-1,MUIV_List_Insert_Bottom);
  170.  
  171.     SEE ALSO
  172.     MUIM_List_Remove, MUIA_List_ConstructHook
  173. List.mui/MUIM_List_InsertSingle
  174.  
  175.     NAME
  176.     MUIM_List_InsertSingle (V7 )
  177.  
  178.     SYNOPSIS
  179.     DoMethod(obj,MUIM_List_InsertSingle,APTR entry, LONG pos);
  180.  
  181.     FUNCTION
  182.     Insert one new entry into a list. Using MUIM_List_Insert has
  183.     caused some confusion since it takes an array to items instead
  184.     a single item. To insert single items, MUIM_List_InsertSingle
  185.     is the better choice.
  186.  
  187.     When the list has a construct hook, the given pointer
  188.     won't be inserted directly but instead passed through
  189.     to the construct hook.
  190.  
  191.     INPUTS
  192.     entry   - item to insert.
  193.  
  194.     pos     - New entry will be added in front of this entry.
  195.               MUIV_List_Insert_Top:
  196.                  insert as first entry.
  197.               MUIV_List_Insert_Active:
  198.                  insert in front of the active entry.
  199.               MUIV_List_Insert_Sorted:
  200.                  insert sorted.
  201.               MUIV_List_Insert_Bottom:
  202.                  insert as last entry.
  203.  
  204.     EXAMPLE
  205.     /* insert a string */
  206.     DoMethod(list,MUIM_List_InsertSingle,"foobar",MUIV_List_Insert_Bottom);
  207.  
  208.     SEE ALSO
  209.     MUIM_List_Remove, MUIA_List_ConstructHook, MUIM_List_InsertSingle
  210. List.mui/MUIM_List_Jump
  211.  
  212.     NAME
  213.     MUIM_List_Jump (V4 )
  214.  
  215.     SYNOPSIS
  216.     DoMethod(obj,MUIM_List_Jump,LONG pos);
  217.  
  218.     FUNCTION
  219.     Scroll any entry into the visible part of a list.
  220.  
  221.     Note: Jumping to an entry doesn't mean to make this
  222.           entry the active one. This can be done by 
  223.           setting the MUIA_List_Active attribute.
  224.  
  225.     INPUTS
  226.     pos - Number of the entry that should be made visible.
  227.           Use MUIV_List_Jump_Active to jump to the active
  228.           entry.
  229.  
  230.     EXAMPLE
  231.     /* line 42 is interesting, so make it visible */
  232.     DoMethod(list,MUIM_List_Jump,42);
  233.  
  234.     SEE ALSO
  235.     MUIA_List_Active
  236. List.mui/MUIM_List_Move
  237.  
  238.     NAME
  239.     MUIM_List_Move (V9 )
  240.  
  241.     SYNOPSIS
  242.     DoMethod(obj,MUIM_List_Move,LONG from, LONG to);
  243.  
  244.     FUNCTION
  245.     Move an entry from one position to another.
  246.  
  247.     INPUTS
  248.     pos1 - number of the first entry.
  249.     pos2 - number of the second entry.
  250.  
  251.     Possible special values since muimaster.library V9:
  252.  
  253.     MUIV_List_Move_Top       0
  254.     MUIV_List_Move_Active   -1
  255.     MUIV_List_Move_Bottom   -2
  256.     MUIV_List_Move_Next     -3 /* only valid for second parameter */
  257.     MUIV_List_Move_Previous -4 /* only valid for second parameter */
  258.  
  259.     SEE ALSO
  260.     MUIM_List_Insert, MUIM_List_Remove, MUIM_List_Exchange
  261. List.mui/MUIM_List_NextSelected
  262.  
  263.     NAME
  264.     MUIM_List_NextSelected (V6 )
  265.  
  266.     SYNOPSIS
  267.     DoMethod(obj,MUIM_List_NextSelected,LONG *pos);
  268.  
  269.     FUNCTION
  270.     Iterate through the selected entries of a list.
  271.     This method steps through the contents of a (multi
  272.     select) list and returns every entry that is currently
  273.     selected. When no entry is selected but an entry is
  274.     active, only the active entry will be returned.
  275.  
  276.     This behaviour will result in not returning the
  277.     active entry when you have some other selected
  278.     entries somewhere in your list. Since the active
  279.     entry just acts as some kind of cursor mark,
  280.     this seems to be the only sensible possibility
  281.     to handle multi selection together with keyboard
  282.     control.
  283.  
  284.     INPUTS
  285.     pos - a pointer to longword that will hold the number
  286.           of the returned entry. Must be set to 
  287.           MUIV_List_NextSelected_Start at start of iteration. 
  288.           Is set to MUIV_List_NextSelected_End when iteration
  289.           is finished.
  290.  
  291.     EXAMPLE
  292.  
  293.     /* Iterate through a list with FileInfoBlocks */
  294.  
  295.     struct FileInfoBlock *fib;
  296.     LONG id = MUIV_List_NextSelected_Start;
  297.  
  298.     for (;;)
  299.     {
  300.        DoMethod(list,MUIM_List_NextSelected,&id);
  301.        if (id==MUIV_List_NextSelected_End) break;
  302.  
  303.        DoMethod(list,MUIM_List_GetEntry,id,&fib);
  304.        printf("selected: %s\n",fib->fib_FileName);
  305.     }
  306.  
  307.  
  308.     SEE ALSO
  309.     MUIM_List_Select
  310. List.mui/MUIM_List_Redraw
  311.  
  312.     NAME
  313.     MUIM_List_Redraw (V4 )
  314.  
  315.     SYNOPSIS
  316.     DoMethod(obj,MUIM_List_Redraw,LONG pos);
  317.  
  318.     FUNCTION
  319.     If you made some changes to an entry of your list and
  320.     want these changes to be shown in the display, you will
  321.     have to call this method.
  322.  
  323.     INPUTS
  324.     pos - Number of the line to redraw. When the line is not
  325.           currently visible, nothing will happen. Specials:
  326.           MUIV_List_Redraw_Active:
  327.              redraw the active line (if any),
  328.           MUIV_List_Redraw_All:
  329.              redraw all lines.
  330.  
  331.     EXAMPLE
  332.     /* do a complete refresh: */
  333.     DoMethod(list,MUIM_List_Redraw,MUIV_List_Redraw_All);
  334. List.mui/MUIM_List_Remove
  335.  
  336.     NAME
  337.     MUIM_List_Remove (V4 )
  338.  
  339.     SYNOPSIS
  340.     DoMethod(obj,MUIM_List_Remove,LONG pos);
  341.  
  342.     FUNCTION
  343.     Remove an entry from a list.
  344.  
  345.     INPUTS
  346.     pos - number of the entry to be removed or one of
  347.           MUIV_List_Remove_First,
  348.           MUIV_List_Remove_Active,
  349.           MUIV_List_Remove_Last.
  350.           When the active entry is removed, the following entry
  351.           will become active.
  352.  
  353.     EXAMPLE
  354.     /* when delete is pressed, remove the active entry */
  355.     DoMethod(btdel,MUIM_Notify,MUIA_Pressed,FALSE,
  356.        list,2,MUIM_List_Remove,MUIV_List_Remove_Active);
  357.  
  358.     SEE ALSO
  359.     MUIM_List_Insert, MUIA_List_DestructHook
  360. List.mui/MUIM_List_Select
  361.  
  362.     NAME
  363.     MUIM_List_Select (V4 )
  364.  
  365.     SYNOPSIS
  366.     DoMethod(obj,MUIM_List_Select,LONG pos, LONG seltype, LONG *state);
  367.  
  368.     FUNCTION
  369.     Select/deselect a list entry or ask an entry if its
  370.     selected.
  371.  
  372.     INPUTS
  373.  
  374.     pos     - Number of the entry or
  375.               MUIV_List_Select_Active for the active entry.
  376.               MUIV_List_Select_All    for all entries.
  377.  
  378.     seltype - MUIV_List_Select_Off     unselect entry.
  379.               MUIV_List_Select_On      select entry.
  380.               MUIV_List_Select_Toggle  toggle entry.
  381.               MUIV_List_Select_Ask     just ask about the state.
  382.  
  383.     state   - Pointer to a longword. If not NULL, this will
  384.               be filled with the current selection state.
  385.  
  386.     NOTES
  387.     Since version V9 of muimaster.library: 
  388.     If pos==MUIV_List_Select_All and seltype==MUIV_List_Select_Ask,
  389.     state will be filled with the total number of selected entries.
  390.  
  391.     EXAMPLE
  392.     /* toggle selection state of active entry */
  393.     DoMethod(list,MUIM_List_Select,MUIV_List_Select_Active,
  394.        MUIV_List_Select_Toggle,NULL);
  395.  
  396.     /* select all entries */
  397.     DoMethod(list,MUIM_List_Select,MUIV_List_Select_All,
  398.        MUIV_List_Select_On,NULL);
  399.  
  400.     SEE ALSO
  401.     MUIA_List_MultiTest_Hook
  402. List.mui/MUIM_List_Sort
  403.  
  404.     NAME
  405.     MUIM_List_Sort (V4 )
  406.  
  407.     SYNOPSIS
  408.     DoMethod(obj,MUIM_List_Sort,);
  409.  
  410.     FUNCTION
  411.     Sort the list. MUI uses an iterative quicksort algorithm,
  412.     no stack problems will occur.
  413.  
  414.     SEE ALSO
  415.     MUIA_List_CompareHook
  416. List.mui/MUIA_List_Active
  417.  
  418.     NAME
  419.     MUIA_List_Active -- (V4 ) [ISG], LONG
  420.  
  421.     SPECIAL INPUTS
  422.     MUIV_List_Active_Off
  423.     MUIV_List_Active_Top
  424.     MUIV_List_Active_Bottom
  425.     MUIV_List_Active_Up
  426.     MUIV_List_Active_Down
  427.     MUIV_List_Active_PageUp
  428.     MUIV_List_Active_PageDown
  429.  
  430.     FUNCTION
  431.     Reading this attribute will return the number of
  432.     the active entry (the one with the cursor on it).
  433.     The result is between 0 and MUIA_List_Entries-1
  434.     or MUIV_List_Active_Off, in which case there is
  435.     currently no active entry.
  436.  
  437.     Setting the attribute will cause the list to
  438.     move the cursor to the new position and scroll
  439.     this position into the visible area.
  440.  
  441.     SEE ALSO
  442.     MUIA_List_Entries, MUIA_List_First, MUIA_List_Visible
  443. List.mui/MUIA_List_AdjustHeight
  444.  
  445.     NAME
  446.     MUIA_List_AdjustHeight -- (V4 ) [I..], BOOL
  447.  
  448.     FUNCTION
  449.     A list with MUIA_List_AdjustHeight set to true is exactly
  450.     as high as all of its entries and not resizable. This is
  451.     only possible when the list is filled *before* the window
  452.     is opened.
  453.  
  454.     SEE ALSO
  455.     MUIA_List_AdjustWidth
  456. List.mui/MUIA_List_AdjustWidth
  457.  
  458.     NAME
  459.     MUIA_List_AdjustWidth -- (V4 ) [I..], BOOL
  460.  
  461.     FUNCTION
  462.     A list with MUIA_List_AdjustWidth set to true is exactly
  463.     as wide as the widest entry and not resizable. This is
  464.     only possible when the list is filled *before* the window
  465.     is opened.
  466.  
  467.     SEE ALSO
  468.     MUIA_List_AdjustHeight
  469. List.mui/MUIA_List_CompareHook
  470.  
  471.     NAME
  472.     MUIA_List_CompareHook -- (V4 ) [IS.], struct Hook *
  473.  
  474.     FUNCTION
  475.     If you plan to have the entries of your list sorted
  476.     (either by inserting them sorted or by using the
  477.     MUIM_List_Sort method) and if the entries of your
  478.     list are not simple strings, you *must* supply
  479.     a compare hook.
  480.  
  481.     This hook will be called with one list element in A1
  482.     and another one in A2. You should return
  483.  
  484.     -1   e1 <  e2
  485.      0   e1 == e2
  486.      1   e1 >  e2
  487.  
  488.     EXAMPLE
  489.     /* the builtin string compare function */
  490.  
  491.         LONG __asm cmpfunc(_a1 char *s1,_a2 char *s2)
  492.     {
  493.        return(stricmp(s1,s2));
  494.     }
  495.  
  496.     SEE ALSO
  497.     MUIA_List_ConstructHook, MUIA_List_DestructHook
  498. List.mui/MUIA_List_ConstructHook
  499.  
  500.     NAME
  501.     MUIA_List_ConstructHook -- (V4 ) [IS.], struct Hook *
  502.  
  503.     SPECIAL INPUTS
  504.     MUIV_List_ConstructHook_String
  505.  
  506.     FUNCTION
  507.     The construct hook is called whenever you add an
  508.     entry to your list. MUI will not insert the given
  509.     pointer directly, but instead call the construct
  510.     hook and add its result code.
  511.  
  512.     Imagine you want to display a list of entries
  513.     in a directory. You could step through it
  514.     using Examine()/ExNext() and directly use the
  515.     MUIM_List_Insert method on your file info block
  516.     buffer.
  517.  
  518.     Your construct hook will be called with this
  519.     file info block as parameter, makes a copy of
  520.     it and returns the address of that copy. Thats
  521.     what is actually added to the list.
  522.  
  523.     The corresponding destruct hook is called whenever
  524.     an entry shall be removed. It's task would simply be
  525.     to free the memory and maybe other resources concering
  526.     this entry that were allocated by the construct hook.
  527.  
  528.     Using these two functions, you will never have to
  529.     worry about freeing the memory used by your list
  530.     entries. Clearing the list or disposing the list
  531.     object will automatically remove all entries and
  532.     thus free the associated resources.
  533.  
  534.     The construct hook will be called with the hook
  535.     in A0, the data given to MUIM_List_Insert as message
  536.     in register A1 and with pointer to a standard kick 3.x
  537.     memory pool in A2. If you want, you can use the exec
  538.     or amiga.lib functions for allocating memory within
  539.     this pool, but this is only an option.
  540.  
  541.     If the construct hook returns NULL, nothing will be
  542.     added to the list.
  543.  
  544.     There is a builtin construct hook available called
  545.     MUIV_List_ConstructHook_String. This expects that
  546.     you only add strings to your list and will make
  547.     a local copy of this string to allow you destroying
  548.     the original. Of course you *must* also use
  549.     MUIV_List_DestructHook_String in this case.
  550.  
  551.     Without construct and destruct hooks, you are responsible
  552.     for allocating and freeing entries yourself.
  553.  
  554.     EXAMPLE
  555.     /* the builtin string construct and destruct functions: */
  556.  
  557.     APTR __asm consfunc(_a2 APTR pool,_a1 char *str)
  558.     {
  559.        char *new;
  560.        if (new=AllocPooled(pool,strlen(str)+1))
  561.           strcpy(new,str);
  562.        return(new);
  563.     }
  564.  
  565.     VOID __asm desfunc(_a2 APTR pool,_a1 char *entry)
  566.     {
  567.        FreePooled(pool,entry,strlen(entry)+1);
  568.     }
  569.  
  570.     /* for more sophisticated hooks see demo program WbMan.c */
  571.  
  572.     SEE ALSO
  573.     MUIA_List_DestructHook, MUIA_List_DisplayHook
  574. List.mui/MUIA_List_DestructHook
  575.  
  576.     NAME
  577.     MUIA_List_DestructHook -- (V4 ) [IS.], struct Hook *
  578.  
  579.     SPECIAL INPUTS
  580.     MUIV_List_DestructHook_String
  581.  
  582.     FUNCTION
  583.     Set up a destruct hook for your list. For detailed
  584.     explanation see MUIA_List_ConstructHook.
  585.  
  586.     SEE ALSO
  587.     MUIA_List_ConstructHook, MUIA_List_DisplayHook
  588. List.mui/MUIA_List_DisplayHook
  589.  
  590.     NAME
  591.     MUIA_List_DisplayHook -- (V4 ) [IS.], struct Hook *
  592.  
  593.     FUNCTION
  594.     Since MUI's lists can handle any kind of entries,
  595.     you have to supply a display hook to specify what
  596.     should actually be shown in the display.
  597.  
  598.     The hook will be called with a pointer to the
  599.     entry to be displayed in A1 and a pointer to
  600.     a string array containing as many entries as
  601.     your list may have columns in A2.
  602.  
  603.     You must fill this array with the strings that
  604.     you want to display.
  605.  
  606.     Note: You can of course use MUI's text engine
  607.           facilities here to create e.g. right aligned
  608.           or centered columns.
  609.  
  610.     Without a display hook, MUI expects a simple one
  611.     columned string list.
  612.  
  613.     See MUIA_List_Format for details about column handling.
  614.  
  615.     Note: Since version 6 of MUI, the display hook also gets the
  616.         position of the current entry as additional parameter. You
  617.     can easily do e.g. some line numbering using this feature. The
  618.     number (from 0 to NumEntries-1) is stored in the longword
  619.     *preceding* the column array (see example below).
  620.  
  621.     EXAMPLE
  622.     /* list of file info blocks, two columned, name and size */
  623.  
  624.     LONG __asm dispfunc(_a2 char **array,_a1 struct FileInfoBlock *fib)
  625.     {
  626.        static char buf1[20],buf2[20];
  627.  
  628.        if (fib->fib_EntryType<0)
  629.          sprintf(buf2,"\33r%ld",fib->fib_Size);
  630.        else
  631.          strcpy(buf2,"\33r(dir)");
  632.  
  633.        sprintf(buf1,"%ld",array[-1]);   // get the line number.
  634.  
  635.        *array++ = buf1;
  636.        *array++ = fib->fib_FileName;
  637.        *array   = buf2;
  638.  
  639.        return(0);
  640.     }
  641.  
  642.     SEE ALSO
  643.     MUIA_List_Format, MUIA_Text_Contents
  644. List.mui/MUIA_List_Entries
  645.  
  646.     NAME
  647.     MUIA_List_Entries -- (V4 ) [..G], LONG
  648.  
  649.     FUNCTION
  650.     Get the current number of entries in the list.
  651.  
  652.     SEE ALSO
  653.     MUIA_List_First, MUIA_List_Visible, MUIA_List_Active
  654. List.mui/MUIA_List_First
  655.  
  656.     NAME
  657.     MUIA_List_First -- (V4 ) [..G], LONG
  658.  
  659.     FUNCTION
  660.     Get the number of the entry displayed on top of
  661.     the list. You have to be prepared to get a result
  662.     of -1, which means that the list is not visible
  663.     at all (e.g. when the window is iconifed).
  664.  
  665.     SEE ALSO
  666.     MUIA_List_Visible, MUIA_List_Entries, MUIA_List_Active
  667. List.mui/MUIA_List_Format
  668.  
  669.     NAME
  670.     MUIA_List_Format -- (V4 ) [ISG], STRPTR
  671.  
  672.     FUNCTION
  673.     MUI has the ability to handle multi column lists. To define
  674.     how many columns should be displayed and how they should be
  675.     formatted, you specify a format string.
  676.  
  677.     This format string must contain one entry for each column
  678.     you want to see. Entries are seperated by commas, one
  679.     entry is parsed via dos.library/ReadArgs().
  680.  
  681.     The template for a single entry looks like this:
  682.  
  683.     DELTA=D/N,PREPARSE=P/K,WEIGHT=W/N,
  684.     MINWIDTH=MIW/N,MAXWIDTH=MAW/N,COL=C/N
  685.  
  686.     DELTA
  687.        Space in pixel between this column and the next.
  688.        the last displayed column ignores this setting.
  689.        Defaults to 4.
  690.  
  691.     PREPARSE
  692.        A preparse value for this column. Setting this
  693.        e.g. to "\33c" would make the column centered.
  694.        See MUIA_Text_Contents for other control codes.
  695.  
  696.     WEIGHT
  697.        The weight of the column. As with MUI's group
  698.        class, columns are layouted with a minimum
  699.        size, a maximum size and weight. A column with
  700.        a weight of 200 would gain twice the space than
  701.        a column with a weight of 100.
  702.        Defaults to 100.
  703.  
  704.     MINWIDTH
  705.        Minimum percentage width for the current column.
  706.        If your list is 200 pixel wide and you set this
  707.        to 25, your column will at least be 50 pixel.
  708.        The special value -1 for this parameter means that
  709.        the minimum width is as wide as the widest entry in
  710.        this column. This ensures that every entry will be
  711.        completely visible (as long as the list is wide enough).
  712.        Defaults to -1.
  713.  
  714.     MAXWIDTH
  715.        Maximum percentage width for the current column.
  716.        If your list is 200 pixel wide and you set this
  717.        to 25, your column will not be wider as 50 pixel.
  718.        The special value -1 for this parameter means that
  719.        the maximum width is as wide as the widest entry in
  720.        this column.
  721.        Defaults to -1.
  722.  
  723.     COL
  724.        This value adjusts the number of the current column.
  725.        This allows you to adjust the order of your columns
  726.        without having to change your display hook. See
  727.        example for details.
  728.        Defaults to current entry number (0,1,...)
  729.  
  730.     If your list object gets so small there is not enough
  731.     place for the minwidth of a column, this column will
  732.     be hidden completely and the remaining space is
  733.     distributed between the remaining columns. This is not
  734.     true if the column is the first column, in this case
  735.     the entries will simply be clipped.
  736.  
  737.     Note: You will have as many columns in your list as
  738.           entries in the format string (i.e. number of
  739.           commas + 1). Empty entries, e.g. with a format
  740.           string of ",,,," are perfectly ok.
  741.  
  742.     The default list format is an empty string (""), this
  743.     means a one column list without special formatting.
  744.  
  745.     BUGS
  746.     Currently there is a maximum of 64 columns for a list.
  747.  
  748.     EXAMPLE
  749.     /* Three column list without further formatting: */
  750.     MUIA_List_Format: ",,"
  751.  
  752.     /* Three column list, middle column centered: */
  753.     MUIA_List_Format: ",P=\33c,"
  754.  
  755.     /* Three column list, display order 2 1 0: */
  756.     MUIA_List_Format: "COL=2,COL=1,COL=0"
  757.  
  758.     /* now something more complex.           */
  759.     /* the display hook defines six entries: */
  760.     dispfunc(_a2 char **array,_a1 struct Article *at)
  761.     {
  762.        *array++ = at->FromName; // col 0
  763.        *array++ = at->FromPath; // col 1
  764.        *array++ = at->ToName;   // col 2
  765.        *array++ = at->ToPath;   // col 3
  766.        *array++ = at->Date;     // col 4
  767.        *array   = at->Subject;  // col 5
  768.     }
  769.  
  770.     /* but we only want to have fromname, date and subject
  771.     /* actually displayed, subject shoud be centered: */
  772.     MUIA_List_Format, "COL=0,COL=4,COL=5 P=\33c"
  773.  
  774.     /* maybe this looks kind of silly, why not make our  */
  775.     /* display hook only fill in these three columns.    */
  776.     /* well, if you would e.g. make the format string    */
  777.     /* user configurable and document what your display  */
  778.     /* hook puts into the array, the user could decide   */
  779.     /* what columns he actually wants to see.            */
  780.     /* The supplied example DFView does something like   */
  781.     /* that.                                             */
  782.  
  783.     /* two column list:   ! Eye    1234 !
  784.                               ! Foot     22 !
  785.                               ! Nose  22331 ! */
  786.  
  787.     MUIA_List_Format, "MAW=100,P=\33r"
  788.  
  789.     SEE ALSO
  790.     MUIA_List_DisplayHook, MUIA_Text_Contents
  791. List.mui/MUIA_List_InsertPosition
  792.  
  793.     NAME
  794.     MUIA_List_InsertPosition -- (V9 ) [..G], LONG
  795.  
  796.     FUNCTION
  797.     After insertion of an element with MUIM_List_Insert,
  798.     you can query the position of the new entry by
  799.     getting this attribute.
  800. List.mui/MUIA_List_MultiTestHook
  801.  
  802.     NAME
  803.     MUIA_List_MultiTestHook -- (V4 ) [IS.], struct Hook *
  804.  
  805.     FUNCTION
  806.     If you plan to have a multi selecting list but not
  807.     all of your entries are actually multi selectable
  808.     (e.g. in a file requester), you can supply a
  809.     MUIA_List_MultiTestHook.
  810.  
  811.     It will be called with a pointer to an entry in
  812.     A1 and should return TRUE if the entry is multi
  813.     selectable, FALSE otherwise.
  814.  
  815.     EXAMPLE
  816.     /* multi test func for a list of file info blocks */
  817.  
  818.     LONG __asm mtfunc(_a1 struct FileInfoBlock *fib)
  819.     {
  820.        if (fib->fib_DirEntryType<0)
  821.           return(TRUE);
  822.        else
  823.           return(FALSE);
  824.     }
  825.  
  826.     SEE ALSO
  827.     MUIA_List_ConstructHook, MUIA_List_DestructHook
  828. List.mui/MUIA_List_Quiet
  829.  
  830.     NAME
  831.     MUIA_List_Quiet -- (V4 ) [.S.], BOOL
  832.  
  833.     FUNCTION
  834.     If you add/remove lots of entries to/from a currently visible
  835.     list, this will cause lots of screen action and slow down
  836.     the operation. Setting MUIA_List_Quiet to true will
  837.     temporarily prevent the list from being refreshed, this
  838.     refresh will take place only once when you set it back
  839.     to false again.
  840.  
  841.     EXAMPLE
  842.     set(list,MUIA_List_Quiet,TRUE);
  843.     AddThousandEntries(list);
  844.     set(list,MUIA_List_Quiet,FALSE);
  845.  
  846.     SEE ALSO
  847.     MUIM_List_Insert, MUIM_List_Remove
  848. List.mui/MUIA_List_SourceArray
  849.  
  850.     NAME
  851.     MUIA_List_SourceArray -- (V4 ) [I..], APTR
  852.  
  853.     FUNCTION
  854.     The NULL terminated array given here is immediately inserted into the
  855.     list after object creation time.
  856.  
  857.     EXAMPLE
  858.     static const char *KeyList[] =
  859.     {
  860.        "Cursor Up",
  861.        "Cursor Down",
  862.        "Cursor Left",
  863.        "Cursor Right",
  864.        NULL;
  865.     };
  866.  
  867.     LV_Keys = ListviewObject,
  868.        MUIA_Listview_List, ListObject,
  869.           InputListFrame,
  870.           MUIA_List_AdjustWidth, TRUE,
  871.           MUIA_List_SourceArray, KeyList,
  872.           End,
  873.        End;
  874. List.mui/MUIA_List_Title
  875.  
  876.     NAME
  877.     MUIA_List_Title -- (V6 ) [ISG], char *
  878.  
  879.     FUNCTION
  880.     Specify a title for the current list. The title is displayed
  881.     at the very first line and doesn't scroll away when the list
  882.     top position moves.
  883.  
  884.     Usually, the title is just a string. However, if you have
  885.     a multi column list with a custom display hook and you
  886.     want to have seperate titles for each of your columns,
  887.     you can set this attribute to TRUE. In this case, whenever
  888.     MUI feels that the list title has to be drawn, it will
  889.     call your display hook with a NULL entry pointer. Your
  890.     hook has to check for this NULL entry and fill the
  891.     given string array with your column titles. Layout of
  892.     the column titles follows the same rules as layout
  893.     of the lists entries.
  894.  
  895.     EXAMPLE
  896.  
  897.     /* display function for a multi columned file list with titles */
  898.  
  899.     LONG __asm DisplayFunc(_a2 char **array,_a1 struct Entry *e)
  900.     {
  901.        struct Data *data = hook->h_Data;
  902.  
  903.        if (e)
  904.        {
  905.           *array++ = e->Name;
  906.           *array++ = e->Size;
  907.           *array++ = e->Date;
  908.           *array++ = e->Time;
  909.           *array++ = e->Flags;
  910.           *array   = e->Comment;
  911.        }
  912.        else
  913.        {
  914.           *array++ = "Name";
  915.           *array++ = "Size";
  916.           *array++ = "Date";
  917.           *array++ = "Time";
  918.           *array++ = "Flags";
  919.           *array   = "Comment";
  920.        }
  921.  
  922.        return(0);
  923.     }
  924.  
  925.     SEE ALSO
  926.     MUIA_List_DisplayHook
  927. List.mui/MUIA_List_Visible
  928.  
  929.     NAME
  930.     MUIA_List_Visible -- (V4 ) [..G], LONG
  931.  
  932.     FUNCTION
  933.     Get the current number of visible entries in the list.
  934.     You have to be prepared to get a result
  935.     of -1, which means that the list is not visible
  936.     at all (e.g. when the window is iconifed).
  937.  
  938.     SEE ALSO
  939.     MUIA_List_First, MUIA_List_Entries, MUIA_List_Active
  940.